Pyton 1º/2013
Write the first paragraph of your page here. Linguagem Python - 1/2013 Write the first section of your page here. Grupo Caio Cristo - 11/0009606 Pedro Henrique - 11//018907 Diego Marques - 11/0027876 Samuel pala - 11/0066120 Raphael Rodrigues - 11/00 História Python surgiu no final de 1989, por Guido van Rossum, no instituto de pesquisa nacional para matemática e Ciência da Computação. Como Linguagens Dinámicas ERAM vistas não apenas Passado Como Linguagens script, Usadas parágrafo automatizar Pequenas tarefas, porem, com o passar do tempo, ELAS cresceram, madureceram e conquistaram Seu Espaço nenhuma Mercado, Ponto de Chamar a Atenção dos Grandes fornecedores de Tecnologia. Vários fatores contribuíram parágrafo ESTA Mudanca, Tais Como a internet, o software de Código Aberto e como Metodologias Ageis de Desenvolvimento. Neste Contexto o Python se destacou Como UMA das Mais Populares e Poderosas e Hoje AINDA EXISTE UMA Comunidade movimentada de Usuarios da Linguagem No Mundo, o Que se reflete los listas Ativas de DISCUSSÃO E muitas Ferramentas available los Código Aberto. O que é a linguagem de programação Python Python é uma LP de altíssimo nível (VHLL - Very High Level Language), de sintaxe moderna, orientada a objetos, interpretada via bytecode, com tipagem forte (não há conversões automáticas) e dinâmica (não há declaração de variáveis e elas podem conter diferentes objetos), modular, multiplataforma, de fácil aprendizado e de implementação livre. Python foi criada por GuidoVanRossum. Em que tipo de aplicações eu usaria Python? Python é uma linguagem de uso geral que pode ser empregada em vários tipos de problemas. A biblioteca padrão inclui módulos para processamento de texto e expressões regulares, protocolos de rede (HTTP, FTP, SMTP, POP, XML-RPC, IMAP), acesso aos serviços do sistema operacional, criptografia, interface gráfica etc. Além da biblioteca padrão, existe uma grande variade de extensões adicionais para todo tipo de aplicação. Construções Construções de Python incluem: estrutura de seleção (if, else, elif); estrutura de repetição (for, while), que itera por um container, capturando cada elemento em uma variável local dada; construção de classes (class); construção de subrotinas (def); construção de escopo (with), como por exemplo para adquirir um recurso. Critérios de Avaliação Legibilidade O Python possui uma sintaxe clara e concisa, que favorece a legibilidade do código fonte, tornando a linguagem mais produtiva. Prioriza a legibilidade do código sobre a velocidade ou expressividade ao usar palavras-chaves em inglês, onde outras linguagens usam pontuação, além de conter um menor número de exceções sintáticas e casos especiais que C ou Pascal . Capacidade de Escrita Simplicidade e ortogonalidade Python é uma linguagem minimalista e por isso possui menos instruções básicas e palávras reservadas, facilitando o aprendizado. É uma linguagem de alto nível, com alta capacidade de abstração o que a torna simples, poderosa a expressiva. Além disso, Python procura facilitar a implementação com apenas um modo correto de se executar uma determinada operação, e por possuir um conjunto reduzido de estruturas de controle, reduz o gráu de complexidade da linguagem. Exemplo de avaliação de listas: lista = 10,9,8,7,6,5,4,3,2,1 lista = for x in lista if x % 2 = 0 10,8,6,4,2 Suporte para abstração Em linguagens de programação, abstração relaciona-se com a definição de dados abstratos e com a possibilidade de abstair um processo utilizando funções e/ou procedimentos. Isso implica em um impacto na capacidade de escrita e na confiabilidade, facilitando o reuso do código e a legibilidade, ainda porque é uma linguagem orientada a objetos. Python trata as funções como tipos de dados de primeira ordem, o que permite passar uma função como parâmetro para novas funções, ou armazenar funções como atributos/elementos de uma estrutura de dados ou lsita e também retornálas como resultado de uma expressão. Exemplo: map(cube, range(1, 11)) Expressividade A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional. Prioriza a legibilidade do código sobre a velocidade ou expressividade. Combina uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros. Qualidade de definição A documentação oficial de Python, referente ao interpretador CPython, encontrada em http://docs.python.org/3/, é vasta e de fácil entendimento. Apesar dos padrões e especificações serem bem definidos, de um modo geral, devido ao fato da linguagem ser de código aberto e possuir várias implementações, podemos dizer que ela não é formalmente especificada. Apesar da documentação estar em inglês, atualmente existe um projeto de tradução da documentação para o português. Usuários característicos Por ter uma fácil integração com aplicativos por meio da sua utilização como linguagem script, além de ser utilizada como linguagem principal no desenvolvimento de sistemas, o Python é usado é bem aceita por empresas como Google (parte dos crawlers), Yahoo (sítio de grupos de usuários), Microsoft (IronPython: Python para .NET), Nokia (disponível para as linhas de celulares e PDAs) e Disney (animações 3D). Domínio de aplicação A linguagem pode ser integrada com aplicativos como linguagem script para automatizar tarefas e adicionar novas funcionalidades, ou para oferecer seus recursos para outro programa, através de uma API ou protocolo. Muitos desses pacotes de software são Open Source, como o BrOffice.org e o Blender, por exemplo. Muitas vezes isso é possível porque esses programas adotaram uma arquitetura de plugins, na qual existe uma infraestrutura genérica que permite que componentes externos sejam ligados aos aplicativos. Na maioria dos casos, isso é viabilizado mediante o uso de uma API que é disponibilizada pelo software, que é vista pelo Python como um módulo ou um pacote, que apenas precisa estar no PYTHONPATH para que possa ser utilizado. Com isso, o programa pode fazer chamadas as rotinas do aplicativo, para utilizar seus recursos e se comunicar. Existe também diversas linguagens que podem ser aproveitadas pelo Python, por meio de várias formas de integração. Uma forma genérica de fazer isso é gerar uma biblioteca compartilhada (shared library) através do compilador da outra linguagem e fazer chamadas a funções que estão definidas na biblioteca. Como a implementação original do Python é usando Linguagem C, é possível integrar Python e C nos dois sentidos: ▪ Python -> C (Python faz chamadas a um módulo compilado em C). ▪ C -> Python (C evoca o interpretador Python em modo embedded). Também é possível integrar o Python com Fortran usando o utilitário f2py, que faz parte do projeto NumPy. A partir da versão 2.5, o Python incorporou o módulo ctypes, que implementa tipos compatíveis com os tipos usados pela linguagem C e permite evocar funções de bibliotecas compartilhadas. O módulo provê várias formas de evocar funções. Funções que seguem a convenção de chamada stdcall, como a API do Windows, podem ser acessadas através da classe windll. Dynamic-link library (DLL) é a implementação de bibliotecas compartilhadas que são usadas no Windows. A linguagem também pode ser integrada com componentes baseados no framework .NET por meio do interpretador Python na linguagem C#, IronPython. Sintaxe Um programa feito em Python é constituído de linhas, que podem continuar nas linhas seguintes, pelo uso do caractere de barra invertida (\) ao final de linha ou parênteses, colchetes ou chaves, em expressões que utilizam tais caracteres. Exemplo: #var será igual a 13; var = 6 + \ 7 #var2 recebe uma lista de números var2 = 2, 3, 4 Para fazer um comentário em python, usar-se o caractere #, como no exemplo mostrado acima. Qualquer texto após o caractere # é ignorado, com exceção dos comentários funcionais, que são usados para: alterar a codificação do arquivo fonte do programa (acrescentando um comentário com o texto “#-*- coding: -*#-” no inicio do arquivo) e para definir o interpretador que será utilizado para rodar o programa em sistemas UNIX (acrescentando um comentário com o texto “#!” no começo do arquivo). Como Python é uma linguagem orientada a objetos, as estruturas de dados possuem atributos (os dados em si) e métodos. Estes sao acessados por um ponto (.). #acessando o método de um objeto objeto.metodo() Blocos Os blocos de código são delimitados pelo uso de endentação. A linha anterior ao bloco sempre termina com dois pontos (:). Controle de fluxo Para executar os comandos de forma condicional, é possível utilizar a estrutura if/elif/else: if : elif : else: onde a condição retorna um valor lógico. O comando elif é opcional, podendo existir vários elif, enquanto só pode haver um comando else para cada if. Estruturas de repetição A estrutura de repetição mais utilizada em Python é o for: for in : continue break else: Durante a execução de um laço for, a referência aponta para um elemento da sequência. A cada iteração, a referência é atualizada, para que o bloco de código do for processe o elemento correspondente. A clausula break interrompe o laço e continue passa para a próxima iteração. O else só será executado ao fim do laço, exceto quando o laço for interrompido por um break. Uma função importante, e que ajuda bastante na implementação do for, é a função range(m, n, p), que retorna uma lista de inteiros que começam com m, são menores que n e aumentam em passos de comprimento p. Exemplo: soma = 0 for x in range(1, 5): soma = soma + x Outra estrutura de repetição é o while: while : continue break else: O bloco de código dentro do laço while é repetido enquanto a condição do laço for verdadeira. Assim como no for, o bloco de código dentro do else só será executado ao fim do laço, exceto quando o laço for interrompido por um break. Tipos Python utiliza tipagem dinâmica, o que significa que o tipo de uma variável é inferido pelo interpretador em tempo de execução. A tipagem do Python é forte, ou seja, o interpretador verifica se as operações são válidas e não faz coerções automáticas entre tipos incompatíveis. Em Python, os nomes das variáveis devem começar com letra (sem acentuação) ou sublinhado (_). Elas são criadas através da atribuição e destruídas pelo coletor de lixo (garbage colector), quando não existem mais referências a elas. Existem vários tipos simples de dados (inteiros, reais). Há, também, tipos que funcionam como coleções (listas, tuplas). Os tipos podem ser mutáveis (permite que o conteúdo das variáveis seja alterado) ou imutáveis (o conteúdo das variáveis não pode ser alterado). Strings, por exemplo, são imutáveis (com exceção das MutableString, importadas do módulo UserString). Os tipos e rotinas mais comuns estão implementados na forma de builtins, ou seja, eles estão sempre disponíveis em tempo de execução, sem a necessidade de importar nenhuma biblioteca. tipos builtins: *None; *NotImplemented; *Ellipsis; : Numericos: *int; *long; *float; *bool; *complex; : Sequências Imutáveis: *str; *unicode; *tuple; : Sequências Mutáveis: *list; *bytearray; : Sets: *set; *frozenset; : Mapeamentos: *dict; *slice; *callable; *file;As strings no Python são buitins para armazenar texto Números Python oferece alguns tipos numéricos na forma de builtins (int, float, complex). Além dos números inteiros convencionais, existem também os inteiros longos, que tem dimensão arbitrária e são limitados pela memória disponível. O Python tem uma série de operadores definidos para manipular números, através de cálculos aritméticos, operações lógicas ou processamento bit-a-bit (em que os números são tratados na forma binária). Além de operadores, Python também tem algumas funções builtins para lidar com números (abs, pow, oct, entre outras). Texto As strings são buitins para armazenar texto. Como elas são imutáveis, para realizar operações como remover ou modificar um caractere de uma string, o Python precisa criar um nova string. Exemplos de operações com strings em Python. # Concatenação print 'The ' + s + ' run away!' # Interpolação print 'tamanho de %s => %d' % (s, len(s)) # Parâmetros identificados pelo nome msg = '{saudacao}, são {hora:02d}:{minuto:02d}' print msg.format(saudacao='Bom dia', hora=7, minuto=30) # Inverte string print 'arroz'::-1 # Mostra: zorra No módulo string, existem várias funções para tratar com texto. O módulo também implementa um tipo chamado Template, que é um modelo de string que pode ser preenchido através de um dicionário. Os identificadores são inciados por cifrão ($). Exemplo: # importando o módulo string import string # Cria uma string template st = string.Template('se $isso, então $aquilo') # Preenche o modelo com um dicionário s = st.substitute({'isso': 'chover', 'aquilo': 'vou dormir'}) Como citado anteriormente, é possível usar strings mutáveis no Python, através do módulo UserString, que define o tipo MutableString. Elas são menos eficientes do que strings imutáveis, pois consomem mais recursos, dadas suas complexidades. Listas Listas são coleções heterogêneas de objetos, que podem ser de qualquer tipo, inclusive outras listas. Ao contrário das strings, as listas são mutáveis. lista = b, ..., z Operações com listas: # Criando uma lista de numeros lista = 2, 3, 4, 5 # Varrendo a lista inteira for num in lista: print lista # Trocando o último elemento lista-1 = 8 # Incluindo lista.append(10) # Removendo lista.remove(3) # Ordena a lista lista.sort() # Inverte a lista lista.reverse() A lista possui o método pop() que facilita a implementação de filas e pilhas. Por exemplo, pop(0) remove e retorna o primeiro elemento da lista (operação feita em filas), enquanto pop() remove e retorna o último item (operação feita em pilhas). Tuplas Semelhantes as listas, porém são imutáveis. # Parênteses são opcionais tupla = (a, b, ..., z) # Listas podem ser convertidas em tuplas tupla = tuple(lista) # E tuplas podem ser convertidas em listas lista = list(tupla) As tuplas são mais eficientes do que as listas convencionais, pois consomem menos recursos computacionais. Dicionários Um dicionário é uma lista de associações compostas por uma chave única e estruturas correspondentes. Dicionários são mutáveis, tais como as listas. A chave precisa ser de um tipo imutável. dicionario = {'a': a, 'b': b, ..., 'z': z} Operações com dicionário: dic = {'comida': 'sushi', 'origem': 'japonesa'} # Adicionando elemento dic'restaurante' = 'peixe japones' # Deletando elemento del dic'origem' Verdadeiro, falso e nulo Assim como no C, o tipo booleano (bool) é uma especialização do tipo inteiro (int). O verdadeiro é chamado True e é igual a 1, enquanto o falso é chamado False e é igual a zero. Valores considerados falsos: ▪ False (falso). ▪ None (nulo). ▪ 0 (zero). ▪ '' (string vazia).'' ▪ [] (lista vazia). ▪ () (tupla vazia). ▪ {} (dicionário vazio). ▪ Outras estruturas com o tamanho igual a zero. Os operadores booleanos no Python são: and, or, not, is e in. O calculo do valor resultante na operação and ocorre da seguinte forma: se a primeira expressão for verdadeira, o resultado será a segunda expressão, senão será a primeira. Já para o operador or, se a primeira expressão for falsa, o resultado será a segunda expressão, senão será a primeira. Para os outros operadores, o retorno será do tipo bool (True ou False). print 0 and 3 # Mostra 0 print 2 and 3 # Mostra 3 print 0 or 3 # Mostra 3 Funções